วิธีการทำงานของ Hash trees ของ ต้นไม้แฮช

Hash tree เป็นต้นไม้ของ hashes ซึ่งใบของมันคือค่า hash ของก้อนข้อมูล เช่น ไฟล์หรือกลุ่มของข้อมูล ซึ่ง Nodes ที่ถูกเพิ่มเข้ามาในต้นไม้คือ hash ของ Node ลูกของตัว Node นั้นเองเช่น ในรูป hash 0 เป็นผลลัพธ์ของการ hashing hash 0-0 กับ hash 0-1 นั่นคือ hash 0 = hash( hash 0-0 + hash 0-1 ) ซึ่ง + หมายถึงการเชื่อมต่อกันของ Node

การใช้งาน hash tree ส่วนใหญ่คือ binary (แต่ละ Node มีลูกสองตัว) แต่จริงๆแล้วมันสามารถมี Node ลูกได้มากกว่านั้น

บ่อยครั้งที่ cryptographic hash function เช่น SHA-1, Whirlpool, หรือ Tiger ใช้สำหรับการ hashing ถ้า hash tree ต้องป้องกันความเสียหายที่อาจคาดไม่ถึง มันจะทำให้ผลการตรวจสอบความปลอดภัยมีประสิทธิภาพลดลง เช่น CRCs ที่สามารถถูกใช้ได้

ในด้านบนสุดของ hash tree คือ top hash (root hash หรือ master hash) ก่อนดาวน์โหลดไฟล์บน p2p network ในกรณีส่วนใหญ่ top hash ที่ได้มาจากแหล่งที่เชื่อถือได้ยกตัวอย่างเช่น เว็บไซต์ที่เป็นที่รู้จักมีข้อเสนอแนะที่ดีสำหรับไฟล์ที่จะดาวน์โหลด เมื่อ top hash สามารถใช้ได้ hash tree สามารถได้รับจากแหล่งข้อมูลที่เชื่อถือไม่ได้ เหมือน peer อื่นๆใน p2p network จากนั้นนำ hash tree ที่ได้รับมาไปตรวจสอบด้วย top hash ที่เชื่อถือได้ และถ้า hash tree ได้รับความเสียหายหรือเป็นถูกปลอมแปลง hash tree จากแหล่งอื่นๆจะพยายามจนกระทั่งพบ hash tree ที่เข้ากันได้กับ top hash

ความแตกต่างที่สำคัญจาก hash list คือ กิ่งหนึ่งของ hash tree ที่สามารถดาวน์โหลดได้ทันทีและความสมบูรณ์ของแต่ละกิ่งสามารถตรวจสอบได้ทันทีถึงแม้ว่าต้นไม้ทั้งหมดจะยังไม่สามารถใช้ได้นี้จะเป็นประโยชน์ตั้งแต่มันมีประสิทธิภาพในการแยกไฟล์ขนาดเล็กมากเพื่อที่จะดาวน์โหลดข้อมูลเพียงก้อนเล็กๆ ถ้าหากมันได้รับความเสียหาย

ถ้าไฟล์ที่ถูก hash มีขนาดใหญ่มาก hash tree หรือ hash list จะมีขนาดใหญ่ตามไปด้วย แต่มันเป็นต้นไม้ กิ่งเล็กๆหนึ่งกิ่งจะสามารถดาวน์โหลดได้เร็วและเมื่อนำแต่ละกิ่งมารวมกันเราก็จะสามารถตวรจสอบได้ และจากนั้นการดาวน์โหลดของก้อนข้อมูลก็สามารถเริ่มขึ้นได้

ใกล้เคียง